package com.shujia.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Table;

import java.io.IOException;
import java.sql.DriverManager;

public class Demo01HBaseConn {

    public static void main(String[] args) throws IOException {

        // 创建一个配置对象
        Configuration conf = HBaseConfiguration.create();
        // 设置hbase对应的zookeeper集群的地址
        conf.set("hbase.zookeeper.quorum", "master:2181,node1:2181,node2:2181");

        // 1、建立一个连接
        Connection conn = ConnectionFactory.createConnection(conf);

        /**
         *  对HBase的操作可以分为两类：
         *     1、对表的元数据进行操作：conn.getAdmin获取Admin对象
         *     2、对表的数据进行操作：conn.getTable获取Table对象
         */

        // 1、对表的元数据进行操作
        Admin admin = conn.getAdmin();

        // 2、对表数据进行操作
        Table t1 = conn.getTable(TableName.valueOf("t1"));

        // 查看HBase中所有的表
        TableName[] tableNames = admin.listTableNames();
        for (TableName tableName : tableNames) {
            System.out.println(tableName.getNameAsString());
        }

        // 创建命名空间
        NamespaceDescriptor ns4 = NamespaceDescriptor.create("ns4").build();
        admin.createNamespace(ns4);

        // 查看所有的命名空间
        NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors();
        for (NamespaceDescriptor namespaceDescriptor : namespaceDescriptors) {
            System.out.println(namespaceDescriptor.getName());
        }

        // 关闭连接
        t1.close();
        admin.close();
        conn.close();


    }
}
